/*
 * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.codegen.ir;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;

import java.io.File;
import java.util.regex.Pattern;

/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestGeneratorForCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("compiler/testData/writeSignature")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class IrWriteSignatureTestGenerated extends AbstractIrWriteSignatureTest {
  private void runTest(String testDataFilePath) {
    KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
  }

  public void testAllFilesPresentInWriteSignature() {
    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature"), Pattern.compile("^(.+)\\.kt$"), null, true);
  }

  @TestMetadata("ArrayOfCharSequence.kt")
  public void testArrayOfCharSequence() {
    runTest("compiler/testData/writeSignature/ArrayOfCharSequence.kt");
  }

  @TestMetadata("ArrayOfInt.kt")
  public void testArrayOfInt() {
    runTest("compiler/testData/writeSignature/ArrayOfInt.kt");
  }

  @TestMetadata("Comparable.kt")
  public void testComparable() {
    runTest("compiler/testData/writeSignature/Comparable.kt");
  }

  @TestMetadata("DeepGenericInnerClass.kt")
  public void testDeepGenericInnerClass() {
    runTest("compiler/testData/writeSignature/DeepGenericInnerClass.kt");
  }

  @TestMetadata("GenericInnerClass.kt")
  public void testGenericInnerClass() {
    runTest("compiler/testData/writeSignature/GenericInnerClass.kt");
  }

  @TestMetadata("GenericInnerClassWithSimpleOuter.kt")
  public void testGenericInnerClassWithSimpleOuter() {
    runTest("compiler/testData/writeSignature/GenericInnerClassWithSimpleOuter.kt");
  }

  @TestMetadata("Int.kt")
  public void testInt() {
    runTest("compiler/testData/writeSignature/Int.kt");
  }

  @TestMetadata("IntArray.kt")
  public void testIntArray() {
    runTest("compiler/testData/writeSignature/IntArray.kt");
  }

  @TestMetadata("IntQ.kt")
  public void testIntQ() {
    runTest("compiler/testData/writeSignature/IntQ.kt");
  }

  @TestMetadata("jlString.kt")
  public void testJlString() {
    runTest("compiler/testData/writeSignature/jlString.kt");
  }

  @TestMetadata("ListOfCharSequence.kt")
  public void testListOfCharSequence() {
    runTest("compiler/testData/writeSignature/ListOfCharSequence.kt");
  }

  @TestMetadata("ListOfStar.kt")
  public void testListOfStar() {
    runTest("compiler/testData/writeSignature/ListOfStar.kt");
  }

  @TestMetadata("MapEntry.kt")
  public void testMapEntry() {
    runTest("compiler/testData/writeSignature/MapEntry.kt");
  }

  @TestMetadata("MutableMapEntry.kt")
  public void testMutableMapEntry() {
    runTest("compiler/testData/writeSignature/MutableMapEntry.kt");
  }

  @TestMetadata("NonGeneric.kt")
  public void testNonGeneric() {
    runTest("compiler/testData/writeSignature/NonGeneric.kt");
  }

  @TestMetadata("StarProjectionInClass.kt")
  public void testStarProjectionInClass() {
    runTest("compiler/testData/writeSignature/StarProjectionInClass.kt");
  }

  @TestMetadata("StarProjectionInSuper.kt")
  public void testStarProjectionInSuper() {
    runTest("compiler/testData/writeSignature/StarProjectionInSuper.kt");
  }

  @TestMetadata("StarProjectionOutsideClass.kt")
  public void testStarProjectionOutsideClass() {
    runTest("compiler/testData/writeSignature/StarProjectionOutsideClass.kt");
  }

  @TestMetadata("syntheticAccessorForGeneric.kt")
  public void testSyntheticAccessorForGeneric() {
    runTest("compiler/testData/writeSignature/syntheticAccessorForGeneric.kt");
  }

  @TestMetadata("VarargCharSequence.kt")
  public void testVarargCharSequence() {
    runTest("compiler/testData/writeSignature/VarargCharSequence.kt");
  }

  @TestMetadata("VarargGeneric.kt")
  public void testVarargGeneric() {
    runTest("compiler/testData/writeSignature/VarargGeneric.kt");
  }

  @TestMetadata("compiler/testData/writeSignature/annotations")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class Annotations extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInAnnotations() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/annotations"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("kArrayClassOfJClass.kt")
    public void testKArrayClassOfJClass() {
      runTest("compiler/testData/writeSignature/annotations/kArrayClassOfJClass.kt");
    }

    @TestMetadata("kArrayClassOfKClass.kt")
    public void testKArrayClassOfKClass() {
      runTest("compiler/testData/writeSignature/annotations/kArrayClassOfKClass.kt");
    }

    @TestMetadata("kClassBasic.kt")
    public void testKClassBasic() {
      runTest("compiler/testData/writeSignature/annotations/kClassBasic.kt");
    }

    @TestMetadata("kClassInt.kt")
    public void testKClassInt() {
      runTest("compiler/testData/writeSignature/annotations/kClassInt.kt");
    }

    @TestMetadata("kClassOfKClass.kt")
    public void testKClassOfKClass() {
      runTest("compiler/testData/writeSignature/annotations/kClassOfKClass.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/callableReference")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class CallableReference extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInCallableReference() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("constructorReferenceInReturnType.kt")
    public void testConstructorReferenceInReturnType() {
      runTest("compiler/testData/writeSignature/callableReference/constructorReferenceInReturnType.kt");
    }

    @TestMetadata("functionReferenceInvoke.kt")
    public void testFunctionReferenceInvoke() {
      runTest("compiler/testData/writeSignature/callableReference/functionReferenceInvoke.kt");
    }

    @TestMetadata("propertyReferenceGet.kt")
    public void testPropertyReferenceGet() {
      runTest("compiler/testData/writeSignature/callableReference/propertyReferenceGet.kt");
    }

    @TestMetadata("suspendFunctionReference.kt")
    public void testSuspendFunctionReference() {
      runTest("compiler/testData/writeSignature/callableReference/suspendFunctionReference.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/constructor")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class Constructor extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInConstructor() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/constructor"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("Constructor0.kt")
    public void testConstructor0() {
      runTest("compiler/testData/writeSignature/constructor/Constructor0.kt");
    }

    @TestMetadata("ConstructorCollectionParameter.kt")
    public void testConstructorCollectionParameter() {
      runTest("compiler/testData/writeSignature/constructor/ConstructorCollectionParameter.kt");
    }

    @TestMetadata("ConstructorWithTypeParameter.kt")
    public void testConstructorWithTypeParameter() {
      runTest("compiler/testData/writeSignature/constructor/ConstructorWithTypeParameter.kt");
    }

    @TestMetadata("ConstructorWithTypeParameterAndValueParameterP.kt")
    public void testConstructorWithTypeParameterAndValueParameterP() {
      runTest("compiler/testData/writeSignature/constructor/ConstructorWithTypeParameterAndValueParameterP.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/declarationSiteVariance")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class DeclarationSiteVariance extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInDeclarationSiteVariance() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/declarationSiteVariance"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("FunctionTwoTypeParameters.kt")
    public void testFunctionTwoTypeParameters() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/FunctionTwoTypeParameters.kt");
    }

    @TestMetadata("GenericOverrides.kt")
    public void testGenericOverrides() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/GenericOverrides.kt");
    }

    @TestMetadata("InInInPosition.kt")
    public void testInInInPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/InInInPosition.kt");
    }

    @TestMetadata("InInOutPosition.kt")
    public void testInInOutPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/InInOutPosition.kt");
    }

    @TestMetadata("InOfInInInPosition.kt")
    public void testInOfInInInPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/InOfInInInPosition.kt");
    }

    @TestMetadata("InOfInInOutPosition.kt")
    public void testInOfInInOutPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/InOfInInOutPosition.kt");
    }

    @TestMetadata("InOfOutInInPosition.kt")
    public void testInOfOutInInPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/InOfOutInInPosition.kt");
    }

    @TestMetadata("InOfOutInOutPosition.kt")
    public void testInOfOutInOutPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/InOfOutInOutPosition.kt");
    }

    @TestMetadata("MappedSupertypeWithVariance.kt")
    public void testMappedSupertypeWithVariance() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/MappedSupertypeWithVariance.kt");
    }

    @TestMetadata("OpenMembersReturnType.kt")
    public void testOpenMembersReturnType() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OpenMembersReturnType.kt");
    }

    @TestMetadata("OpenMembersValueParameter.kt")
    public void testOpenMembersValueParameter() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OpenMembersValueParameter.kt");
    }

    @TestMetadata("OutInField.kt")
    public void testOutInField() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OutInField.kt");
    }

    @TestMetadata("OutInInPosition.kt")
    public void testOutInInPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OutInInPosition.kt");
    }

    @TestMetadata("OutInOutPosition.kt")
    public void testOutInOutPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OutInOutPosition.kt");
    }

    @TestMetadata("OutOfInInInPosition.kt")
    public void testOutOfInInInPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OutOfInInInPosition.kt");
    }

    @TestMetadata("OutOfInInOutPosition.kt")
    public void testOutOfInInOutPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OutOfInInOutPosition.kt");
    }

    @TestMetadata("OutOfOutInInPosition.kt")
    public void testOutOfOutInInPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OutOfOutInInPosition.kt");
    }

    @TestMetadata("OutOfOutInOutPosition.kt")
    public void testOutOfOutInOutPosition() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/OutOfOutInOutPosition.kt");
    }

    @TestMetadata("PropertyGetterIn.kt")
    public void testPropertyGetterIn() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/PropertyGetterIn.kt");
    }

    @TestMetadata("PropertyGetterOut.kt")
    public void testPropertyGetterOut() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/PropertyGetterOut.kt");
    }

    @TestMetadata("PropertyGetterTwoParams.kt")
    public void testPropertyGetterTwoParams() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/PropertyGetterTwoParams.kt");
    }

    @TestMetadata("PropertySetterIn.kt")
    public void testPropertySetterIn() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/PropertySetterIn.kt");
    }

    @TestMetadata("PropertySetterOut.kt")
    public void testPropertySetterOut() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/PropertySetterOut.kt");
    }

    @TestMetadata("RedundantProjections.kt")
    public void testRedundantProjections() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/RedundantProjections.kt");
    }

    @TestMetadata("SuperClassWithVariance.kt")
    public void testSuperClassWithVariance() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/SuperClassWithVariance.kt");
    }

    @TestMetadata("SuperTraitWithVariance.kt")
    public void testSuperTraitWithVariance() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/SuperTraitWithVariance.kt");
    }

    @TestMetadata("SuperTypeWithVarianceInArguments.kt")
    public void testSuperTypeWithVarianceInArguments() {
      runTest("compiler/testData/writeSignature/declarationSiteVariance/SuperTypeWithVarianceInArguments.kt");
    }

    @TestMetadata("compiler/testData/writeSignature/declarationSiteVariance/jvmWildcardAnnotations")
    @TestDataPath("$PROJECT_ROOT")
    @RunWith(JUnit3RunnerWithInners.class)
    public static class JvmWildcardAnnotations extends AbstractIrWriteSignatureTest {
      private void runTest(String testDataFilePath) {
        KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
      }

      public void testAllFilesPresentInJvmWildcardAnnotations() {
        KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/declarationSiteVariance/jvmWildcardAnnotations"), Pattern.compile("^(.+)\\.kt$"), null, true);
      }

      @TestMetadata("onFunction.kt")
      public void testOnFunction() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/jvmWildcardAnnotations/onFunction.kt");
      }

      @TestMetadata("onTypes.kt")
      public void testOnTypes() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/jvmWildcardAnnotations/onTypes.kt");
      }

      @TestMetadata("primitiveTypes.kt")
      public void testPrimitiveTypes() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/jvmWildcardAnnotations/primitiveTypes.kt");
      }
    }

    @TestMetadata("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization")
    @TestDataPath("$PROJECT_ROOT")
    @RunWith(JUnit3RunnerWithInners.class)
    public static class WildcardOptimization extends AbstractIrWriteSignatureTest {
      private void runTest(String testDataFilePath) {
        KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
      }

      public void testAllFilesPresentInWildcardOptimization() {
        KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization"), Pattern.compile("^(.+)\\.kt$"), null, true);
      }

      @TestMetadata("argumentOverridability.kt")
      public void testArgumentOverridability() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/argumentOverridability.kt");
      }

      @TestMetadata("arrays.kt")
      public void testArrays() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/arrays.kt");
      }

      @TestMetadata("complicatedInBounds.kt")
      public void testComplicatedInBounds() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/complicatedInBounds.kt");
      }

      @TestMetadata("deepOut.kt")
      public void testDeepOut() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/deepOut.kt");
      }

      @TestMetadata("fields.kt")
      public void testFields() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/fields.kt");
      }

      @TestMetadata("finalReturnType.kt")
      public void testFinalReturnType() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/finalReturnType.kt");
      }

      @TestMetadata("outIn.kt")
      public void testOutIn() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/outIn.kt");
      }

      @TestMetadata("outInv.kt")
      public void testOutInv() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/outInv.kt");
      }

      @TestMetadata("topLevelIn.kt")
      public void testTopLevelIn() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/topLevelIn.kt");
      }

      @TestMetadata("topLevelInv.kt")
      public void testTopLevelInv() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/topLevelInv.kt");
      }

      @TestMetadata("typeParameter.kt")
      public void testTypeParameter() {
        runTest("compiler/testData/writeSignature/declarationSiteVariance/wildcardOptimization/typeParameter.kt");
      }
    }
  }

  @TestMetadata("compiler/testData/writeSignature/defaultImpls")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class DefaultImpls extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInDefaultImpls() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/defaultImpls"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("functionTypeParameterClash.kt")
    public void testFunctionTypeParameterClash() {
      runTest("compiler/testData/writeSignature/defaultImpls/functionTypeParameterClash.kt");
    }

    @TestMetadata("functionTypeParameterClashWith_I.kt")
    public void testFunctionTypeParameterClashWith_I() {
      runTest("compiler/testData/writeSignature/defaultImpls/functionTypeParameterClashWith_I.kt");
    }

    @TestMetadata("propertyTypeParameterClash.kt")
    public void testPropertyTypeParameterClash() {
      runTest("compiler/testData/writeSignature/defaultImpls/propertyTypeParameterClash.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/inlineClasses")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class InlineClasses extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInInlineClasses() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("basicInlineClassDeclarationCodegen.kt")
    public void testBasicInlineClassDeclarationCodegen() {
      runTest("compiler/testData/writeSignature/inlineClasses/basicInlineClassDeclarationCodegen.kt");
    }

    @TestMetadata("genericInlineClassBasedOnGenericType.kt")
    public void testGenericInlineClassBasedOnGenericType() {
      runTest("compiler/testData/writeSignature/inlineClasses/genericInlineClassBasedOnGenericType.kt");
    }

    @TestMetadata("genericMethodInsideClass.kt")
    public void testGenericMethodInsideClass() {
      runTest("compiler/testData/writeSignature/inlineClasses/genericMethodInsideClass.kt");
    }

    @TestMetadata("inlineClassAsGenericArgument.kt")
    public void testInlineClassAsGenericArgument() {
      runTest("compiler/testData/writeSignature/inlineClasses/inlineClassAsGenericArgument.kt");
    }

    @TestMetadata("inlineClassBasedOnOtherInlineClass.kt")
    public void testInlineClassBasedOnOtherInlineClass() {
      runTest("compiler/testData/writeSignature/inlineClasses/inlineClassBasedOnOtherInlineClass.kt");
    }

    @TestMetadata("inlineClassWithComplexSubstitutedType.kt")
    public void testInlineClassWithComplexSubstitutedType() {
      runTest("compiler/testData/writeSignature/inlineClasses/inlineClassWithComplexSubstitutedType.kt");
    }

    @TestMetadata("inlineClassesInsideFunctionalTypes.kt")
    public void testInlineClassesInsideFunctionalTypes() {
      runTest("compiler/testData/writeSignature/inlineClasses/inlineClassesInsideFunctionalTypes.kt");
    }

    @TestMetadata("nullableInlineClassType.kt")
    public void testNullableInlineClassType() {
      runTest("compiler/testData/writeSignature/inlineClasses/nullableInlineClassType.kt");
    }

    @TestMetadata("simpleSignatureWithInlineClassTypesAsPrimitive.kt")
    public void testSimpleSignatureWithInlineClassTypesAsPrimitive() {
      runTest("compiler/testData/writeSignature/inlineClasses/simpleSignatureWithInlineClassTypesAsPrimitive.kt");
    }

    @TestMetadata("simpleSignatureWithInlineClassTypesAsReference.kt")
    public void testSimpleSignatureWithInlineClassTypesAsReference() {
      runTest("compiler/testData/writeSignature/inlineClasses/simpleSignatureWithInlineClassTypesAsReference.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/java8")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class Java8 extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInJava8() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/java8"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("mutableMapRemove.kt")
    public void testMutableMapRemove() {
      runTest("compiler/testData/writeSignature/java8/mutableMapRemove.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/nothing")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class Nothing extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInNothing() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/nothing"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("nothing.kt")
    public void testNothing() {
      runTest("compiler/testData/writeSignature/nothing/nothing.kt");
    }

    @TestMetadata("nullableNothing.kt")
    public void testNullableNothing() {
      runTest("compiler/testData/writeSignature/nothing/nullableNothing.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/parameterlessMain")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class ParameterlessMain extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInParameterlessMain() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/parameterlessMain"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("arrayWithContravariantStringIsNotMainMethod.kt")
    public void testArrayWithContravariantStringIsNotMainMethod() {
      runTest("compiler/testData/writeSignature/parameterlessMain/arrayWithContravariantStringIsNotMainMethod.kt");
    }

    @TestMetadata("impostorMains.kt")
    public void testImpostorMains() {
      runTest("compiler/testData/writeSignature/parameterlessMain/impostorMains.kt");
    }

    @TestMetadata("main.kt")
    public void testMain() {
      runTest("compiler/testData/writeSignature/parameterlessMain/main.kt");
    }

    @TestMetadata("notJvmMainName.kt")
    public void testNotJvmMainName() {
      runTest("compiler/testData/writeSignature/parameterlessMain/notJvmMainName.kt");
    }

    @TestMetadata("simple.kt")
    public void testSimple() {
      runTest("compiler/testData/writeSignature/parameterlessMain/simple.kt");
    }
  }

  @TestMetadata("compiler/testData/writeSignature/suspendMain")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class SuspendMain extends AbstractIrWriteSignatureTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInSuspendMain() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeSignature/suspendMain"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("parameterlessSuspendMain.kt")
    public void testParameterlessSuspendMain() {
      runTest("compiler/testData/writeSignature/suspendMain/parameterlessSuspendMain.kt");
    }

    @TestMetadata("suspendMain.kt")
    public void testSuspendMain() {
      runTest("compiler/testData/writeSignature/suspendMain/suspendMain.kt");
    }
  }
}
